新手问个||与&&优先级的问题

来源:百度知道 编辑:UC知道 时间:2024/09/22 21:19:01
#include"stdio.h"
main()
{
a=b=c=2;
++a||++b&&++c;
printf("%d%d%d",a,b,c);
}
运行结果为3 2 2
我觉得不对。
在C语言里面不是&&的优先级大于||这样吗?我觉得应该是先运算&&两边的++b与++c,b=3与c=3而后再运算||左边++a,a=3
那么应该是3 3 3 不明白为什么是3 2 2这个结果

先谢谢各位了。

知道什么叫“短路”吗?
||在左边得到true 后,不再计算右边,因为不管右边如何整个表达式都是真。
&&在左边得到false后,不再计算右边,因为不管右边如何整个表达式都是假。
这就叫“短路”
编译器对||,&&从左到右计算,所以计算完++a为ture后,不再计算++b和++c